{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So as we have known, images can be moved by adding or subtracting a vector in cartesian system.\n",
    "\n",
    "\n",
    "But how about rotation? Can we do it with vector? \n",
    "\n",
    "The answer is yes. We can do it! By adding or subtracting a radian to vectors that existed in a polar system, we can rotate an image.\n",
    "\n",
    "**In polar coordinates, adding to the angle rotates a vector further counterclockwise, while subtracting from it rotates the vector clockwise.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 2.42\n",
    "\n",
    "Create a rotate(angle, vectors) function that takes an array of input vectors in Cartesian coordinates and rotates those by the specified angle (counterclockwise or clockwise, according to whether the angle is positive or negative)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from vectors import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import radians, degrees\n",
    "\n",
    "def myRotate(angle, vectors):\n",
    "    angle = radians(angle)\n",
    "    vectors = [to_polar(v) for v in vectors]\n",
    "    return [to_cartesian((l, a+angle)) for l, a in vectors]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(6.123233995736766e-17, 1.0)]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myRotate(90, [(1,0)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(6.123233995736766e-17, 1.0)]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rotate(radians(90), [(1,0)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 2.43\n",
    "\n",
    "Create a function regular_ polygon(n) that returns Cartesian coordinates for the vertices of a regular n-sided polygon (that is, having all angles and side lengths equal). For instance, polygon(7) produces vectors defining the heptagon."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.0, 0.0)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_polar((1,0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import pi\n",
    "\n",
    "def regular_polygon(n):\n",
    "    angle = 2*pi/n\n",
    "    point = to_polar((1, 0))\n",
    "    points = [(point[0], point[1]+(i*angle)) for i in range(n)]\n",
    "    points = [to_cartesian(p) for p in points]\n",
    "    return points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from vector_drawing import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw(Polygon(*regular_polygon(7)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
